/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package ClassesListas;

import ClassesUnicas.Pessoa;
import DAO.DAOPessoa;
import DAO.MySQL.DAOPessoaMySQL;
import java.util.ArrayList;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 * Pessoas
 *
 * Versao 1.0
 *
 * Data Criação 04/12/2013
 *
 * @author Igor
 */
public class Pessoas {
    //Atributos
    private ArrayList<Pessoa> pessoas;
    private DAOPessoa pessoaDAO;

    //Construtores
    public Pessoas() {
        this.pessoas = new ArrayList<Pessoa>();
        this.pessoaDAO = new DAOPessoaMySQL();
    }

    //Getters e Setters
    /**
     * @return the pessoas
     */
    public ArrayList<Pessoa> getPessoas() {
        return pessoas;
    }

    /**
     * @param pessoas the pessoas to set
     */
    public void setPessoas(ArrayList<Pessoa> pessoas) {
        this.pessoas = pessoas;
    }

    /**
     * Adiciona uma pessoa no ArrayList
     *
     * @param pessoa
     */
    public void setPessoas(Pessoa pessoa) {
        this.pessoas.add(pessoa);
    }

    /**
     * @return the pessoa DAOPessoa */
    public DAOPessoa getPessoaDAO() {
        return pessoaDAO;
    }

    //Outrs Metodos
    /**
     * Lista, o ArrayList de pessoas, na tabela passada como parametro
     * @param tabela 
     */
    public void listaPessoas(JTable tabela) {
        DefaultTableModel dtm = (DefaultTableModel) tabela.getModel();
        int i = 0;

        while(dtm.getRowCount() != 0){
            dtm.removeRow(0);
        }

        i = 0;
        while (i < pessoas.size()) {
            String codigo = Long.toString(pessoas.get(i).getIdPessoa());
            String nome = pessoas.get(i).getNome();

            dtm.addRow(new Object[]{codigo, nome});   // um "" para cada coluna
            i++;
        }
    }

    /**
     * Grava, no Banco de Dados, a pessoa passada como parametro
     * @param pessoa
     * @return 
     */
    public long gravaPessoa(Pessoa pessoa) {
        return pessoaDAO.gravaPessoa(pessoa);
    }
    
    /**
     * Busca a pessoa com ID igual ao passado como parametro
     * @param idPessoa
     * @return 
     */
    public Pessoa localizaPessoa(long idPessoa){
        for(int i = 0;i < pessoas.size();i++){
            if(idPessoa == pessoas.get(i).getIdPessoa()){
                return pessoas.get(i);
            }
        }
        
        return null;
    }
    
    /**
     * Busca a pessoa com Nome igual ao passado como parametro
     * @param nome
     * @return 
     */
    public Pessoa localizaPessoa(String nome){
        for(int i = 0;i < pessoas.size();i++){
            if(pessoas.get(i).getNome().equals(nome)){
                return pessoas.get(i);
            }
        }
        
        return null;
    }
}
